Introdução à Lógica de Programação

Aula 9 - Estrutura condicional e de repetição II



Helder Jefferson Ferreira da Luz

helder.luz@ifpr.edu.br

Objetivos da aula

  • Conhecer a estrutura condicional switch.
  • Aprender o uso do laço while, uma estrutura de repetição que executa um bloco de código enquanto uma condição é verdadeira.

Introdução a estrutura SWITCH

  • A estrutura switch é usada para executar diferentes blocos de código de acordo com o valor de uma expressão.
  • Alternativa ao uso de múltiplos comandos if...else if...else quando se deseja comparar a mesma variável com vários valores.
Sintaxe
switch (expressao) {
    case valor1:
        // Código a ser executado se expressao === valor1
        break;
    case valor2:
        // Código a ser executado se expressao === valor2
        break;
    // ... outros casos ...
    default:
        // Código a ser executado se nenhum dos casos anteriores for satisfeito
}

Exemplo de uso do SWITCH

let fruta = prompt("Escolha uma fruta: maçã ou banana");

switch (fruta) {
    case "maçã":
        console.log("Você escolheu maçã.");
        break;
    case "banana":
        console.log("Você escolheu banana.");
        break;
    default:
        console.log("Fruta não reconhecida.");
}
Importante
O comando break encerra o bloco do case. Se não for usado, a execução continuará para o próximo caso (efeito chamado de fall-through).

Exemplo de Switch com fall-through

let animal = "Girafa";
switch (animal) {
  case "Vaca":
  case "Girafa":
  case "Cachorro":
  case "Porco":
    console.log("Esse animal não está extinto.");
    break;
  case "Triceratops":
  default:
    console.log("Esse animal está extinto.");
}

SWITCH vs IF...ELSE

  • Use switch quando precisar comparar o mesmo valor com várias opções.
  • Use if...else para condições mais complexas ou diferentes variáveis.
Exemplo equivalente com if...else
if (fruta === "maçã") {
    console.log("Você escolheu maçã.");
} else if (fruta === "banana") {
    console.log("Você escolheu banana.");
} else {
    console.log("Fruta não reconhecida.");
}

Dicas para o uso do SWITCH

  • Sempre utilize break ao final de cada case para evitar que outros casos sejam executados.
  • O bloco default é opcional, mas recomendado para tratar valores inesperados.
  • O valor comparado no switch utiliza comparação estrita (===).

Introdução ao laço WHILE

  • O laço while repete um bloco de código enquanto uma condição é verdadeira.
  • Diferente do for, o while é usado quando não sabemos quantas vezes o laço será executado.

Sintaxe
while (condicao) {
    // Código a ser repetido
}

Introdução ao laço WHILE

Exemplo de uso
let contador = 0;

while (contador < 5) {
    console.log(contador); // imprime os números de 0 a 4
    contador = contador + 1;
}

Importante
A condição precisa ser atualizada para evitar laços infinitos.

Introdução ao laço WHILE

Exemplo para controle de execução
let entrada = prompt("Digite 'sair' para encerrar: ");

while (entrada !== "sair") {
    entrada = prompt("Digite 'sair' para encerrar: ");
}
O laço termina quando a entrada do usuário corresponde exatamente à string “sair”.

Laço WHILE com controle de fluxo

  • Podemos usar break e continue para controlar o fluxo dentro do while.
    • break: interrompe a execução de um laço de repetição antes que ele complete todas as suas iterações.
    • continue: interrompe apenas a iteração atual e passa para a próxima iteração do laço.

Laço WHILE com controle de fluxo

Exemplo com break
let x = 1;

while (x <= 10) {
    if (x === 5) {
        break; // interrompe o laço quando x for igual a 5
    }
    console.log(x);
    x += 1;
}
O laço será interrompido quando x for igual a 5.

Laço WHILE com controle de fluxo

Exemplo com continue
let x = 0;

while (x < 5) {
    x = x + 1;
    if (x === 3) {
        continue; // pula o número 3
    }
    console.log(x);
}
O número 3 será pulado, mas o laço continua até 5.

Laço infinito

  • Cuidado com laços infinitos, que ocorrem quando a condição nunca é falsa.
Exemplo de laço infinito
while (true) {
    console.log("Isso será repetido infinitamente.");
}
Para interromper, podemos usar break ou corrigir a lógica.

Dicas para o laço WHILE

  • Condição: Sempre verifique se a condição eventualmente se torna falsa.
  • Evite Laços Infinitos: Certifique-se de que o laço tenha uma maneira de terminar.
  • Controle de Fluxo: Use break e continue para um controle mais refinado do laço.

Dúvidas? 🤔

Exercícios

  1. Escreva um programa que leia um número de 1 a 7 e exiba o dia da semana correspondente usando switch. Se o número não estiver entre 1 e 7, exiba "Dia inválido".

  2. Escreva um programa que imprime os números de 1 a 10 usando um laço while.

  3. Escreva um programa que calcula a soma dos números de 1 a 50 usando while.

  4. Crie um programa que imprime os números de 1 a 20, mas interrompe o laço quando o número for 13.

  5. Escreva um programa que solicita ao usuário adivinhar um número secreto entre 1 e 10. O programa continua pedindo palpites até que o número correto seja adivinhado. Use o while para manter o laço até o palpite estar correto. Ao final, apresente o número de palpites, e parabenise o jogador.

Exercícios

  1. Escreva um programa que solicite ao usuário números inteiros positivos até que ele digite um número negativo. O programa deve somar todos os números positivos e, ao final, exibir a soma.
  2. Escreva um programa que simula um sistema de login. O usuário tem até 3 tentativas para acertar a senha correta. Se errar 3 vezes, o acesso é negado.
  3. Escreva um programa que calcula a média de uma série de números positivos, parando quando o número zero for encontrado. Exiba a média no final.
  4. Implementar um programa que some todos os números informados pelo usuário até que seja digitada a palavra “Fim”.

Exercícios

  1. Faça um programa que utilize um laço while para exibir um menu de opções ao usuário (ex: 1 - Olá, 2 - Tchau, 3 - Sair). Use switch para tratar cada opção. O programa só termina quando o usuário escolher a opção "Sair".

  2. Implementar um programa que simule um sistema de caixa de supermercado. O programa deve solicitar a quantidade e o valor unitário de cada produto. Esse processo deve ser repetido até que o usuário informe a palavra “fim”. Após a entrada da palavra “fim”, o programa deve exibir o valor total da compra.

  1. Implemente um programa de calculadora simples que, dentro de um laço while, peça ao usuário para escolher uma operação (+, -, *, /) usando switch, leia dois números e mostre o resultado. O programa deve continuar até que o usuário escolha sair.

```javascript let i = 1; while (i <= 10) { console.log(i); i++; } ```

```javascript let soma = 0; let i = 1; while (i <= 50) { soma += i; i++; } console.log("Soma:", soma); ```

```javascript let i = 1; while (i <= 20) { if (i === 13) { break; } console.log(i); i++; } ```

```javascript const numeroSecreto = Math.floor(Math.random() * 10) + 1; let palpite = parseInt(prompt("Adivinhe o número entre 1 e 10:")); while (palpite !== numeroSecreto) { palpite = parseInt(prompt("Tente novamente:")); } alert("Parabéns! Você acertou."); ```

```javascript let soma = 0; let numero = parseInt(prompt("Digite um número inteiro positivo (ou negativo para sair):")); while (numero >= 0) { soma += numero; numero = parseInt(prompt("Digite um número inteiro positivo (ou negativo para sair):")); } alert("Soma dos números positivos: " + soma); ```

```javascript const senhaCorreta = "1234"; let tentativas = 0; let senha = prompt("Digite a senha:"); while (senha !== senhaCorreta && tentativas < 2) { tentativas++; senha = prompt("Senha incorreta. Tente novamente:"); } if (senha === senhaCorreta) { alert("Acesso permitido!"); } else { alert("Acesso negado."); } ```

```javascript let soma = 0; let count = 0; let numero = parseFloat(prompt("Digite um número positivo (0 para sair):")); while (numero !== 0) { if (numero > 0) { soma += numero; count++; } numero = parseFloat(prompt("Digite um número positivo (0 para sair):")); } if (count > 0) { alert("Média: " + (soma / count)); } else { alert("Nenhum número positivo informado."); } ```

```javascript let soma = 0; let entrada = prompt("Digite um número ou 'Fim' para encerrar:"); while (entrada.toLowerCase() !== "fim") { soma += parseFloat(entrada); entrada = prompt("Digite um número ou 'Fim' para encerrar:"); } alert("Soma total: " + soma); ```

```javascript let total = 0; let entrada = prompt("Digite a quantidade do produto ou 'fim' para encerrar:"); while (entrada.toLowerCase() !== "fim") { let quantidade = parseInt(entrada); let valor = parseFloat(prompt("Digite o valor unitário do produto:")); total += quantidade * valor; entrada = prompt("Digite a quantidade do produto ou 'fim' para encerrar:"); } alert("Valor total da compra: R$ " + total.toFixed(2)); ```